package site.addzero.repl

import kotlinx.coroutines.runBlocking
import org.koin.core.annotation.Single
import site.addzero.app.AdvancedRepl
import site.addzero.app.ParamDef
import site.addzero.cli.platform.runCmd
import site.addzero.cli.platform.runCmdInteractive

/**
 * InitDockerRepl的REPL包装类，实现AdvancedRepl接口
 * 专门用于通过linuxmirrors.cn脚本安装Docker
 */
@Single
class InitDockerRepl : AdvancedRepl<Unit, String> {
    override val command: String = "init-docker"
    override val description: String = "通过linuxmirrors.cn脚本初始化Docker环境（仅Unix 系统可用）"
    override val paramDefs: List<ParamDef> = listOf()

    override fun eval(params: Unit): String = runBlocking {
        println("正在通过linuxmirrors.cn脚本初始化Docker环境...")

        // 使用交互式命令执行，因为安装过程可能需要用户输入
        val command = "bash <(curl -sSL https://linuxmirrors.cn/docker.sh)"
        val result = command.runCmdInteractive()

        if (result.isSuccess()) {
            println("Docker初始化成功完成!")
            return@runBlocking "Docker初始化成功"
        } else {
            System.err.println("Docker初始化失败: ${result.error}")
            return@runBlocking "Docker初始化失败: ${result.error}"
        }
    }

//    override fun createParams(values: List<Any?>) {
//        return
//    }
}
